#include "smartgaragedoor.h"
#include "globalvars.h"

#include "ohos_init.h"
#include "cmsis_os2.h"
#include "hi_io.h"  
#include "hi_gpio.h" 

int g_garagedoor_flag = 0;

void Garagedoor_gpio_init(void)
{
    hi_gpio_init();
    hi_io_set_func(HI_GPIO_IDX_1, HI_IO_FUNC_GPIO_1_GPIO);  //设置GPIO_7引脚为正常GPIO功能  
	hi_gpio_set_dir(HI_GPIO_IDX_1, HI_GPIO_DIR_OUT);
    hi_io_set_func(HI_GPIO_IDX_2, HI_IO_FUNC_GPIO_2_GPIO);  //设置GPIO_7引脚为正常GPIO功能  
	hi_gpio_set_dir(HI_GPIO_IDX_2, HI_GPIO_DIR_OUT);
}

void Garagedoor_gpio_irqhandler(void)
{
    if(g_garagedoor_flag == 0)
    {
        g_garagedoor_flag = 1;
    }
}

void Garagedoor_gpio_irq(void)
{
	uint32_t ret;
// 	/* 中断GPIO初始化 */
	hi_io_set_func(HI_GPIO_IDX_12, HI_IO_FUNC_GPIO_12_GPIO);  //设置GPIO_7引脚为正常GPIO功能  
	hi_gpio_set_dir(HI_GPIO_IDX_12, HI_GPIO_DIR_IN);  //设置GPIO_7为输入模式 
    hi_io_set_pull(HI_GPIO_IDX_12, HI_IO_PULL_UP);
	//gpio7脚中断创建  
    ret = hi_gpio_register_isr_function(HI_GPIO_IDX_12, HI_INT_TYPE_EDGE, HI_GPIO_EDGE_RISE_LEVEL_HIGH, Garagedoor_gpio_irqhandler, NULL);
    if (ret != 0)
	{
		//中断创建失败  
		printf("  GPIO interrupt init failed!!!\r\n");
		return;
	}
	return;
}

void Garagedoor_init(void)
{
    Garagedoor_gpio_init();
    Garagedoor_gpio_irq();
    printf("  Garagedoor init succeed!!!\r\n"); 
}

void Garagedoor_switch(int flag)
{
    if(flag == 1)
    {
        hi_gpio_set_ouput_val(HI_GPIO_IDX_1, 1);
        hi_gpio_set_ouput_val(HI_GPIO_IDX_2, 0);
        printf("  !!***************!!\n");
		printf("  !! openGardoor   !!\n");
		printf("  !!***************!!\r\n");
    }
    if(flag == 2)
    {
        hi_gpio_set_ouput_val(HI_GPIO_IDX_2, 1);
        hi_gpio_set_ouput_val(HI_GPIO_IDX_1, 0);
        printf("  !!***************!!\n");
		printf("  !! closeGardoor  !!\n");
		printf("  !!***************!!\r\n");
    }
    if(flag == 0)
    {
        hi_gpio_set_ouput_val(HI_GPIO_IDX_1, 0);
        hi_gpio_set_ouput_val(HI_GPIO_IDX_2, 0);
        printf("  !!***************!!\n");
		printf("  !! stopGardoor   !!\n");
		printf("  !!***************!!\r\n");
    }
}